awk -v CMDFILE="uucp_commands"  '# invoke -- menu-based
                                  # command generator
# first line in CMDFILE is the title of the menu
# subsequent lines contain: $1 - Description;
# $2 Command to execute
BEGIN { FS = ":" 
# process CMDFILE, reading items into menu array 
  if ((getline < CMDFILE) > 0)
	title = $1
  else
	exit 1
  while ((getline < CMDFILE) > 0) {
	# load array
	++sizeOfArray
	# array of menu items
	menu[sizeOfArray] = $1
	# array of commands associated with items
	command[sizeOfArray] = $2
  } 
  # call function to display menu items and prompt
  display_menu()
}
# Applies the user response to prompt
{
   # test value of user response
   if ($1 > 0 && $1 <= sizeOfArray) {
	# print command that is executed
	printf("Executing ... %s\n", command[$1]) 
	# then execute it. 
	system(command[$1])
	printf("<Press RETURN to continue>")
 	# wait for input before displaying menu again
	getline
   }
   else 
	exit	
   # re-display menu 
   display_menu()
}

function display_menu() {
	# clear screen -- if clear does not work, try "cls"
	system("clear")
	# print title, list of items, exit item, and prompt
	print "\t" title
	for (i = 1; i <= sizeOfArray; ++i)
		printf "\t%d. %s\n", i, menu[i]
	printf "\t%d. Exit\n", i
	printf("Choose one: ")
}' -
